1. Field of the Invention
This invention relates to the field of solid state logical units and in particular to a storage controller that includes a virtual solid state disk partitioned from cache memory.
2. Discussion of Related Art
Redundant Arrays of Inexpensive Disks (RAID) systems are disk array storage systems designed to provide large amounts of data storage capacity, data redundancy for reliability, and fast access to stored data. RAID provides data redundancy to recover data from a failed disk drive and thereby improve reliability of the array. Although data in the disk array may be distributed over the plurality of disks in the array, to the user portions of the disk array (logical units or LUNs) are mapped to appear as single disks.
There are several different methods to implement RAID. RAID level 1 protects stored data by duplicating the stored data and storing the original data and duplicated data on separate disks. RAID level 0 provides no enhanced data reliability but does enhance I/O performance by distributing data across multiple data disks in the array. Other implementations of RAID, levels 2, 3, 4, 5, and 6 distribute data across multiple data disks in the array to improve performance and provide for a block (or multiple blocks) of redundancy information (e.g., parity) that is distributed over the disk drives.
On each disk, data is mapped and stored in predefined blocks generally having fixed size. A predefined number of blocks of data and redundancy information, from each disk of the array, are mapped to define a stripe of data. RAID levels 2, 3, 4, 5, and 6 do not provide the I/O performance of RAID 0 due to overhead associated with maintenance of the redundancy information (e.g., parity). However, RAID levels 2-6 enhance data redundancy in comparison with RAID level 0.
In RAID level 3, and 4, the parity information is stored in a dedicated parity disk. In RAID levels 5 and 6, the parity information is interleaved across all the disks in the array and is part of the stripe. In RAID levels 3, 4, 5, and 6 parity is computed using the boolean bitwise Exclusive OR (XOR) function, whereas in RAID level 2, parity is computed using the Hamming Code. In RAID level 6, there are two independent parity computations and both are interleaved across the disks.
In RAID levels 2, 3, 4, 5, and 6 I/O performance suffers during write operations to disk due to the need for updating the parity information on the disk array. This performance degradation is often referred to as a write penalty. This write penalty is due to redundancy algorithms (parity computations) that require additional accesses to disk to read and write data. I/O performance is principally measured by the I/O request rate; that is, the time required for executing I/O requests. The time required to execute the read or write operation is defined at a minimum by the time required by disk heads to reach the starting point of data on the disk. Time required to access disk drives in a storage subsystem is therefore the predominant factor in degrading I/O performance.
To improve I/O performance, current RAID controllers include cache memory subsystems attached to the controller to provide efficient I/O operations. Write operations in particular are completed more quickly by storing the host supplied data in cache memory, allowing the host system to carry on, and later posting the data to the disk drives (e.g., write-back caching). The access time to cache is very fast as compared to typical disk drives. The controller later transfers the data from cache to the disk drive for permanent storage. This use of cache defers imposition of the write penalty caused by the redundancy algorithms of RAID levels 2, 3, 4, 5, and 6 but does not eliminate the write penalty.
Other known techniques to reduce the impact of the write penalty use log areas to record information, such as new data, new parity, old data, and/or old parity for later processing in parity computations or for later storing to disk. Use of the log space helps assure reliable data storage (recoverable in case of a failure) until the information can be permanently stored on disk in accordance with the selected RAID management technique. Though new and old data is temporarily saved in a log space, RAID systems using such logging techniques still require writing parity information to disk to permanently store this information and ensure data can be reconstructed in case of a disk failure. Logging techniques, like caching methods, therefore serve to defer the imposition of the write penalty rather than eliminate it because an access to disk is required to write the parity permanently to disk.
These caching and logging methods improve overall performance but do not completely mitigate the I/O performance degradation (parity write penalty) during RAID operations. RAID levels 2, 3, 4, 5, and 6 implemented with present technology, require parity information (or similar redundancy information) and eventually must be updated on the disk array to ensure data reliability. Cache operations or logging operations, as noted above, serve only to delay the inevitable imposition of the RAID write penalty, that is writing parity information to disk.
It is also known to couple RAID controllers to use one or more physical solid state disk devices in place of standard rotating media disk devices. Solid state disk drives use fast RAM memory in place of rotating disk magnetic media and associated moving read/write heads. The purpose of the solid state disk device is to emulate a standard rotating disk drive and thereby improve I/O performance by storing data and/or parity in the higher speed solid state device. Though such devices can dramatically reduce the RAID write penalty, they are stand-alone devices external to the RAID controller. These external solid state disk drives add significant cost to a subsystem due to packaging and interconnection complexity of an external device. Further, external solid state disks are connected to the RAID controller via SCSI or other well known peripheral interconnect protocols and media. Such interconnection interfaces impose a secondary performance limitation as compared to cache memory techniques discussed above. Still further costs are added to a subsystem if spare solid state disks are used in the system to provide hot-swap spares for replacement of a failed solid state disk.
It can be seen from the above discussion that a need exists to improve RAID subsystem performance to reduce RAID write penalties without adding significant cost or complexity to the subsystem.
The present invention solves the above and other problems, thereby advancing the useful arts, by creating one or more virtual solid state disks within a primary RAID controller cache memory. In a first embodiment, the controller uses one or more virtual solid state disks as a private disk storage by reserving for itself the use of the virtual solid state disks. In a second embodiment, a virtual LUN is configured as one or more of the virtual solid state disks operating in conjunction with other physical disks in the disk array. In a third embodiment, a virtual logical unit, that is, a virtual LUN is configured as a one or more virtual solid state disks. According to the present invention, a redundant controller present in the disk array subsystem automatically mirrors the contents of the virtual disk defined within the cache memories. Mirroring of cache between the primary and redundant controllers is an aspect of normal cache operations in some such redundant pairs of controllers.
Specifically, the present invention defines one or more virtual solid state disks within a section of the cache memory of the primary storage controller. In the first embodiment of the present invention, the controller utilizes the virtual solid state disk as a private disk storage unit to store for example, disk array configuration information or information regarding block mapping. The virtual solid state disk can also be utilized to store temporary information. The virtual disk and the virtual LUN is preferably defined within a battery-backed cache memory and is therefore essentially non-volatile with respect to power or reset cycle of the controller.
A person skilled in the art, however, will recognize that a virtual solid state disk storing temporary information does not need to be defined within battery-backed cache memory. For example, operating systems contain scratchpad storage to store non-critical information such as intermediate computation results. It is not necessary to store this non-critical information within a non-volatile storage. Therefore within a controller, it is possible to configure a virtual solid state disk in volatile memory.
In a second embodiment of the present invention, the virtual LUN is a hybrid combination of one or more virtual solid disks and one or more physical disks. Such a high speed LUN is useful, for example, in database applications where transaction checkpoints and logs are frequently updated to assure database structural integrity or in journal file systems where a journal update frees the application to continue processing.
In the third embodiment of the present invention, the controller manages the virtual LUN using RAID management techniques. The controller utilizes any RAID level 1-6 to store host information, such as log files for transactions processing host applications. This high-speed virtual LUN is substantially faster than storing information on a standard rotating disk drive because the virtual disk is defined within the cache memory. This virtual LUN is faster than a real LUN comprised of physical disk drives, or the hybrid virtual LUN in the second embodiment, because the physical disk drives are slower than cache. Thus, the host utilizes the virtual solid state disk to store information for faster access than otherwise possible when the information is stored on disk.
A person skilled in the art will recognize that one or more of these embodiments can be configured within one or more RAID controllers.
The present invention improves I/O performance in numerous ways by utilizing high-speed cache memory in the RAID controller as one or more virtual disks to store information rather than storing this information in disk drives. Since the logical unit is in the cache memory of the controller, data access times are reduced and throughput is increased by retrieving the data from the faster virtual solid state disk(s) rather than from the slower disk drive. Storing parity and/or data in the virtual solid state disk reduces the number of disk accesses. The RAID write penalty is substantially eliminated because parity is not written to a slow rotating disk.
The present invention maintains the data reliability features of RAID. To ensure data availability, the virtual solid state disk is preferably defined within battery-backed cache memory as is provided by many available RAID controllers. Furthermore, a redundant controller and the primary controller are configured in normal operation to mirror one another""s cache content, and thus the virtual solid state disk content is mirrored. This aspect of the present invention helps ensure data redundancy for the data stored in the virtual disk(s) in the event the primary controller fails.
The virtual solid state disk within the controller""s cache memory reduces costs as compared to prior solutions using external solid state disks. As noted above, external solid state disks add complexity (and hence costs) through the addition of device packaging, control electronics, and interconnection media between the external device and the controller. By contrast the virtual disk(s) of the present invention are embodied within the cache memory already present on the storage controllers. This reduces costs by eliminating need for additional device packaging, special control electronics, and for special interconnection of the virtual disk(s) and the controller.
The present invention also improves I/O performance over commercially available external solid state disks because data does not need to be retrieved from an externally attached solid state disk via the slower peripheral connection bus (e.g., EIDE, SCSI, etc.). Rather, the present invention manipulates data in the virtual disk(s) by access to cache memory integrated into the controllers.
It is therefore an object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem performance by defining at least one virtual disk within a storage subsystem controller""s cache.
It is therefore an object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem performance by defining at least one virtual disk within a storage subsystem controller""s cache that is not accessible by the host.
It is yet a further object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem performance by defining a virtual LUN comprising one or more virtual disks defined within a RAID storage subsystem controller""s cache.
It is yet still a further object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem performance by defining a virtual LUN comprising at least one virtual disk and at least one physical disk within a RAID storage subsystem controllers cache.
It is still a further object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem reliability by providing mirroring capability using the RAID storage subsystem primary controller cache and redundant controller cache.
It is still yet a further object of the present invention to provide apparatus and associated methods of operation for improving storage subsystem reliability by defining a virtual disk within the battery-backed portion of cache.
It is another object of the present invention to provide apparatus and associate methods of operation for improving storage subsystem reliability by defining a virtual LUN comprising one or more virtual disks defined within a RAID storage subsystem controller""s battery-backed portion of cache.
It is still another object of the present invention to provide apparatus and associate methods of operation for improving storage subsystem I/O performance and reliability by defining a virtual LUN comprising a plurality of virtual disks defined within a RAID storage subsystem controller that can be also accessed through a redundant RAID storage subsystem controller.